/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pessoas.presenter;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import javax.swing.JOptionPane;
import pessoas.collection.Usuarios;
import pessoas.model.Usuario;
import pessoas.view.AutenticacaoView;

/**
 *
 * @author Bush
 */
public class AutenticacaoPresenter {

    private AutenticacaoView view;
    private Usuarios usuarios;

    public AutenticacaoPresenter() {
        view = new AutenticacaoView();
        view.getTxtMens().setVisible(false);
        try {
            this.usuarios = Usuarios.getInstancia();
        } catch (FileNotFoundException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
        if (usuarios.getUsuarios().size() == 0) {
            view.getTxtMens().setVisible(true);
            view.getBtnLogar().addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent e) {
                    cadastrar();
                    view.dispose();
                }
            });
        } else {
            view.getBtnLogar().addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent e) {
                    view.dispose();
                    logar();
                }
            });
        }
        view.getBtnSair().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                view.dispose();
            }
        });

        view.setLocationRelativeTo(view);
        view.setVisible(true);
    }

    public void cadastrar() {
        try {
            String nome = view.getTxtNome().getText();
            String senha = view.getTxtSenha().getText();

            if (nome.equals("") || senha.equals("")) {
                throw new Exception("Preencha os campos !!");
            }
            if (nome.length() > 8 || nome.length() < 3 || senha.length() < 3 || senha.length() > 8) {
                throw new Exception("Usuário e senha deve conter no mínimo 3 caracteres e no máximo 8");
            }

            Usuario usuario = new Usuario(nome, senha);
            usuarios.gravar(usuario);
            JOptionPane.showMessageDialog(null, "Usuário Cadastrado com Sucesso!!");
            new MainPresenter(usuarios.retornaUsuario(nome, senha),usuarios);
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }

    }

    public void logar() {
        try {
            String nome = view.getTxtNome().getText();
            String senha = view.getTxtSenha().getText();

            if (usuarios.usuarioExiste(nome, senha)) {
                new MainPresenter(usuarios.retornaUsuario(nome, senha),usuarios);
            } else {
                throw new Exception("Usuario ou senha inválidos");
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
    }

}
